#pragma once

#include <sstream>
#include "zakengine/zak.h"

using namespace zak;

#include "basestate.h"
#include "townhall.h"


class TownHall;

//------------------------------------------------------------------------
// TownHallGlobalState: 
//------------------------------------------------------------------------
class TownHallGlobalState : public BaseState<TownHall>
{
private:

	// Class Constructor
	TownHallGlobalState(){}

	// Copy ctor and assignment should be private
	TownHallGlobalState(const TownHallGlobalState&);
	TownHallGlobalState& operator=(const TownHallGlobalState&);

public:

	// This is a singleton
	static TownHallGlobalState* Instance();

	virtual void Enter(TownHall* pTownHall);

	virtual void Execute(TownHall* pTownHall);

	virtual void Exit(TownHall* pTownHall);

	virtual bool OnMessage(TownHall* pTownHall, const Telegram& message);
};

